// 封装五个函数：查找一个、查找多个、新增、删除、修改


// FindOne
// Find
// Insert
// Remove
// Update 

exports.FindOneTableData = function({
    model, // 必须 
    query,//筛选出结果的条件
    fields={},//得到的数据要展示的部分，空就是展示全部
    res, // 必传
    next,
    msg='查询成功'
}){
    model.findOne(query,fields)
    .then(result=>{
        if(next){
            next(result)  // 进入下一步的数据库操作 
        }else{
            res.json({ //没有next就直接输出结果了
                code:200,
                msg:msg,
                result 
            })
        }
    })
    .catch(err=>{
        console.log(err)
        res.json({
            code:500,
            msg:"服务器异常",
            err,
            result:null 
        })   
    })
}

exports.FindAllTableData = function({
    model, // 必须 
    res, // 必传
    query,
    fields={},
    next,
    msg='查询成功',
    skip=0,
    limit=0,
    sort={}, 
}){
    model.find(query,fields)
    .skip(skip)
    .limit(limit)
    .sort(sort) 
    .then(result=>{
        if(next){
            next(result)  // 进入下一步的数据库操作 
        }else{
            res.json({
                code:200,
                msg:msg,
                result 
            })
        }
    })
    .catch(err=>{
        console.log(err)
        res.json({
            code:500,
            msg:"服务器异常",
            err,
            result:null 
        })   
    })
}



exports.UpdateManyTableData = function({
    model, // 必须 
    res, // 必传
    query,//筛选出结果的条件
    data={},
    next,
    msg='修改成功',
}){
    model.updateMany(query,{
        $set:data,
    })
    .then(result=>{
        if(next){
            next(result)  // 进入下一步的数据库操作 
        }else{
            res.json({
                code:200,
                msg:msg,
                result 
            })
        }
    })
    .catch(err=>{
        console.log(err)
        res.json({
            code:500,
            msg:"服务器异常",
            err,
            result:null 
        })   
    })
}


// 添加数据 
exports.InsertManyTableData = function({
    model, // 必须 
    res, // 必传
    data={},  // 添加的数据 
    next,
    msg='添加成功',
}){
    model.insertMany(data)
    .then(result=>{
        if(next){
            next(result)  // 进入下一步的数据库操作 
        }else{
            res.json({
                code:200,
                msg:msg,
                result 
            })
        }
    })
    .catch(err=>{
        console.log(err)
        res.json({
            code:500,
            msg:"服务器异常",
            err,
            result:null 
        })   
    })
}



// 删除数据 
exports.RemoveTableData = function({
    model, // 必须 
    res, // 必传
    query, // 删除条件  
    next,
    msg='删除成功',
}){
    model.remove(query)
    .then(result=>{
        if(next){
            next(result)  // 进入下一步的数据库操作 
        }else{
            res.json({
                code:200,
                msg:msg,
                result 
            })
        }
    })
    .catch(err=>{
        console.log(err)
        res.json({
            code:500,
            msg:"服务器异常",
            err,
            result:null 
        })   
    })
}